/**
 * @description 数据格式化
 * @author 刘煎蛋
 */

const { DEFAULT_PICTURE, REG_FOR_AT_WHO } = require('../conf/constant');
const { timeFormat } = require('../utils/dt');

/**
 * 格式化用户信息
 * @param {Array|object} list 用户列表或者单个用户对象 
 */
function formatUser( list ) {
    if ( list == null ) {
        return list;
    }

    if ( list instanceof Array ) {
        return list.map( _formatUserPicture );
    }

    return _formatUserPicture( list );
}

/**
 * 用户默认头像
 * @param {object} obj 用户对象 
 */
function _formatUserPicture( obj ) {
    if ( obj.picture == null ) {
        obj.picture = DEFAULT_PICTURE;
    }
    return obj;
}

/**
 * 格式化系统时间
 * @param {*} obj 数据
 */
function _formatDBTime( obj ) {
    obj.createdAtFormat = timeFormat(obj.createdAt);
    obj.updatedAtFormat = timeFormat(obj.updatedAt);
    return obj;
}

/**
 * 格式化微博内容
 * @param {*}  
 */
function _formatContent( obj ) {
    obj.contentFormat = obj.content;
    obj.contentFormat = obj.contentFormat.replace( REG_FOR_AT_WHO, ( matchStr, nickName, userName ) => {
        return `<a href="/profile/${userName}">@${nickName}</a>`;
    })
    return obj;
}

/**
 * 格式化微博信息
 * @param {Array|Object} list 微博列表或者单个微博对象
 */
function formatBlog( list ) {
    if ( !list ) return list;

    // 数组
    if ( list instanceof Array ) {
        return list.map(_formatDBTime).map(_formatContent);
    }

    // 对象
    let result = list;
    result = _formatDBTime(result);
    result = _formatContent(result);
    return result;
}

module.exports = {
    formatUser,
    formatBlog
}